package service;

import java.util.List;

import pojo.EssayAndUser;
import pojo.Essay;
import pojo.Page;

public interface EssayServiceI {

	//显示所有人可见的文章
	public List<EssayAndUser> ShowAllEssay();
	
	//显示用户可见的文章
	public List<EssayAndUser> ShowBuserEssay();
	
	//显示仅自己可见的文章
	public List<EssayAndUser> ShowBselfEssay();
	
	//显示文章详细信息/带user信息
	public EssayAndUser ShowEssayDetail(Integer essayId);

	//显示文章详细信息/不带user信息
	public Essay ShowEssayDetailNoUser(Integer essayId);
	
	//更新赞踩
	public int UpdateEssayPtcvr(Essay essay);
	
	//发布文章
	public int PublishEssay(Essay essay);
	
	//根据用户显示文章
	public List<Essay> ShowUsersEssay(Integer userId,Page page);

	//根据用户显示文章数量
	public Integer ShowUsersEssayCount(Integer userId);


	//根据发布日期显示文章/未登录，显示所有人可见
	public List<Essay> ShowUserEssayByDateNoLimit(Integer userId);
	
	//根据发布日期显示文章/未登录，显示所有人可见
	public List<Essay> ShowUserEssayByDate(Integer userId,String permission);
	
	//根据发布日期显示文章/已登录，不显示仅自己可见的
	public List<Essay> ShowUserEssayByDateLimit(Integer userId,String permission);
	
	//删除文章
	public int DeleteEssay(Integer essayId);
	
	//查找文章/无限制
	public Essay FindEssay(Integer essayId);
	
	//查找文章/未登录
	public Essay FindEssayLimitLogout(Integer essayId,String permission);
	
	//查找文章/已登录
	public Essay FindEssayLimitLogin(Integer essayId,String permission);
	
	//显示分页条数据/未登录
	public List<EssayAndUser> ShowLimitEssayLogout(String permission,Page page);

	//显示分页条数据/未登录/数量
	public int ShowLimitEssayLogoutCount(String permission);
	
	//显示分页条数据/已登录
	public List<EssayAndUser> ShowLimitEssayLogin(String permission,Page page);

	//显示分页条数据/已登录/数量
	public int ShowLimitEssayLoginCount(String permission);
	
	//显示有条件的分页条数据/未登录，显示所有人可见的
	public List<EssayAndUser> ShowLimitEssaySelect(String category,String permission,Page page);

	//显示有条件的分页条数据/未登录，显示所有人可见的/数量
	public int ShowLimitEssaySelectCount(String category,String permission);
	
	//显示有条件的分页条数据/登录，不显示仅自己可见
	public List<EssayAndUser> ShowLimitEssaySelectBself(String category,String permission,Page page);

	//显示有条件的分页条数据/登录，不显示仅自己可见/数量
	public int ShowLimitEssaySelectBselfCount(String category,String permission);

	//根据类别显示分页条数据/未登录，显示所有人可见/按点赞量排序
	public  List<EssayAndUser> FindEssayByCategoryAndPraiseLogout(String category,Page page);

	//根据类别显示分页条数据/未登录，显示所有人可见/按点赞量排序/数量
	public  int FindEssayByCategoryAndPraiseLogoutCount(String category);

	//根据类别显示分页条数据/已登录，不现实仅自己可见/按点赞量排序
	public  List<EssayAndUser> FindEssayByCategoryAndPraiseLogin(String category,Page page);

	//根据类别显示分页条数据/已登录，不现实仅自己可见/按点赞量排序/数量
	public int FindEssayByCategoryAndPraiseLoginCount(String category);
	
	//根据评论数量显示/未登录
	public List<EssayAndUser> FindByCommentNumber(String startDate,String permission);
	
	//根据评论数量显示/已登录
	public List<EssayAndUser> FindByCommentNumberLimit(String startDate,String permission);
	
	//搜索结果/登录
	public List<EssayAndUser> SearchResultLogin(String text,Page page);

	//搜索结果/登录/数量
	public int SearchResultLoginCount(String text);
	
	//搜索结果/未登录
	public List<EssayAndUser> SearchResultLogout(String text,Page page);

	//搜索结果/未登录/数量
	public int SearchResultLogoutCount(String text);


	//返回插入ID
	public Integer ReturnEssayId(Essay essay);
	
	//根据文章id查找用户ID
	public Integer FindPublisher(Integer essayId);
	
	//显示管理原可查看的文章
	public List<EssayAndUser> FindManagerViewEssay(Page page);

	//未登录显示文章/按点赞排序/未登录主页
	public List<EssayAndUser> FindEssayByPraiseLogout(Page page);

	//未登录显示文章/按点赞排序/未登录主页/数量
	public int FindEssayByPraiseLogoutCount();

	//已登录显示文章/按点赞排序/已登录主页
	public  List<EssayAndUser> FindEssayByPraiseLogin(Page page);

	//已登录显示文章/按点赞排序/已登录主页
	public  int FindEssayByPraiseLoginCount();
}
